Recommending automated assistant action for inclusion in automated assistant routine

ABSTRACT

Recommending an automated assistant action for inclusion in an existing automated assistant routine of a user, where the existing automated assistant routine includes a plurality of preexisting automated assistant actions. If the user confirms the recommendation through affirmative user interface input, the automated assistant action can be automatically added to the existing automated assistant routine. Thereafter, when the automated assistant routine is initialized, the preexisting automated assistant actions of the routine will be performed, as well as the automated assistant action that was automatically added to the routine in response to affirmative user interface input received in response to the recommendation.

BACKGROUND

Humans can engage in human-to-computer dialogs with interactive softwareapplications referred to herein as “automated assistants” (also referredto as “digital agents,” “chatbots,” “interactive personal assistants,”“intelligent personal assistants,” “conversational agents,” etc.). Forexample, humans (which when they interact with automated assistants maybe referred to as “users”) can provide commands and/or requests usingspoken natural language input (i.e. utterances) which may in some casesbe converted into text and then processed, and/or by providing textual(e.g., typed) natural language input.

Automated assistants can perform a routine of multiple actions inresponse to, for example, receiving a particular command (e.g., ashortcut command). For example, in response to receiving a spokenutterance of “Good Night”, an automated assistant can cause a sequenceof actions to be performed, such as causing networked lights to beturned off, tomorrow's weather forecast to be rendered, and a user'sagenda for tomorrow to be rendered. An automated assistant routine canbe particularized to a user and/or to an ecosystem of client devices,and the user can be provided control to manually add certain actions tocertain routines. For example, a first user can have a “Good Morning”automated assistant routine with a first set of good morning automatedassistant actions defined by the first user, a “good night” automatedassistant routine with a first set of good night automated assistantactions defined by the first user, and additional automated assistantroutines with additional automated assistant actions defined by thefirst user. A separate second user can have a “good morning” automatedassistant routine with a disparate set of good morning automatedassistant actions defined by the second user, a “Good Night” routinewith a disparate set of good night automated assistant actions definedby the second user, etc.

SUMMARY

As described herein, various automated assistant routines can beinitiated in response to detecting a shortcut command in spoken or typeduser interface input of a user, initiated in response to userinteraction with a virtual or hardware element at a client device,initiated in response to detecting a user gesture, and/or initiated inresponse to other abbreviated user interface input(s). Abbreviated userinterface inputs for initiating an automated assistant routine areabbreviated in that they require less user input, and/or less processingof the user input, than would otherwise be needed to cause performanceof the actions of the automated assistant routine, but for theabbreviated user input. For example, a shortcut command that causesperformance of an automated routine of a sequence of actions can beabbreviated in that it is shorter in length than the commands that wouldotherwise need to be spoken/typed, but for the condensed command, tocause the automated assistant to perform the set of actions. Variousautomated assistant routines can additionally or alternatively beinitiated automatically upon the occurrence of one or more conditions,and optionally without requiring explicit user interface input. Suchautomatic initiation of an automated assistant routine can also requireless user input and/or less processing of the user input, than wouldotherwise be needed to cause performance of the actions of the automatedassistant routine.

Despite the existence of automated assistant routines, there are stillvarious automated assistant actions that are not incorporated into anyautomated assistant routines of a user, and that the user insteadperforms through protracted interaction with an automated assistantand/or through protracted interaction with other computerapplication(s). Each occurrence of such a protracted interaction canconsume significant computer and/or network resources. For example, toturn on networked lights in a kitchen via an automated assistant, a usercan be required to speak “turn on the kitchen lights” or similar spokenutterance to an automated assistant interface of a client device. Audiodata corresponding to the spoken utterance can be transmitted from theclient device to remote systems. The remote systems can process theaudio data (e.g., voice-to-text processing, natural language processingof the text, etc.) to determine an appropriate command for the spokenutterance, can transmit the command to an agent to cause the kitchenlights to be turned on, can receive a confirmation from the agent thatthe kitchen lights have been turned on, and can transmit data to theclient device to cause the client device to render a notification thatthe lights have been turned on.

In view of these and other considerations, implementations disclosedherein relate to recommending an automated assistant action forinclusion in an existing automated assistant routine of a user, wherethe existing automated assistant routine includes one or more ofpreexisting automated assistant actions. If the user confirms therecommendation through affirmative user interface input, the automatedassistant action can be automatically added to the existing automatedassistant routine. Thereafter, when the automated assistant routine isinitialized, the preexisting automated assistant actions of the routinewill be performed, as well as the automated assistant action that wasautomatically added to the routine in response to affirmative userinterface input received in response to the recommendation.

This obviates the need for the user to instead perform further resourceintensive protracted interactions to cause the action to be performed.Rather, the action is performed as one of multiple actions of theautomated assistant routine to which it is added. This can result inimproved human-computer interactions through, for example, lessening aquantity of input that needs to be provided by a user (e.g., provided bya user to an automated assistant interface) to cause performance of theaction. In addition to improving human-computer interaction, this candirectly result in various computer and/or network efficiencies relativeto, for example, instead requiring the user to provide further userinterface input to cause the action to be performed. Further, asdescribed above and elsewhere herein, the initialization of theautomated assistant routine can be in response to abbreviated userinterface inputs that can be efficiently processed and/or can beautomatic upon the occurrence of condition(s) that don't requireprocessing of user interface inputs. Yet further, recommending anautomated assistant action for inclusion in an existing routine, andautomatically adding the action to the routine in response to one-touchand/or single utterance (e.g., “yes, add”) affirmative input, providesfor efficient supplementing of existing routines. For example,automatically adding the action in response to simplified user interfaceinput can be more computationally efficient than requiring a user toinstead engage in a protracted interaction to manually add the action,such as a protracted interaction that requires the user to manuallyselect a routine to be modified, specify an action for adding to theroutine, confirm that the action should be added to the routine, etc.

Implementations disclosed herein can determine an automated assistantaction for potentially recommending for inclusion in one or moreautomated assistant routines of a user. Further, the automated assistantaction can be compared to each of a plurality of automated assistantroutines that are stored in association with the user and, based on thecomparing (e.g., if one or more criteria are satisfied), a subset (e.g.,one) of the automated assistant routines can be selected. Graphicaland/or audile user interface output can be rendered via a client deviceof the user, where the user interface output prompts the user to add theaction to selected routine(s) of the subset. If affirmative userinterface input is received in response to the user interface output,the automated assistant action can be automatically (e.g., withoutfurther user interface input being required) added to one of theselected routine(s) indicated by the affirmative user interface input.Thereafter, when the one of the selected routines is initiated,automatic performance of preexisting automated assistant actions of theroutine can be initialized, as well as automatic performance of theadded one of the selected action(s).

Various techniques can be utilized to determine an automated assistantaction for potentially recommending for inclusion in one or moreautomated assistant routines of a user. In some implementations,determining the automated assistant action is based on the automatedassistant action being initiated by the user via one or more instancesof user interface input provided by the user. For example, an “adjustthe smart thermostat to 72°” automated assistant action can bedetermined based on one or more previous instances of the userinitiating the automated assistant action through spoken and/or otheruser interface input provided to the automated assistant. In someimplementations, determining the automated assistant action is based ona different, but related, automated assistant action being initiated bythe user via one or more instance of user interface input provided bythe user. For example, a “grilling tips” automated assistant action,that causes a different tip related to grilling to be rendered each timeit is performed, can be determined based on the user providing one ormore past instance of user interface input related to grilling (e.g.,“how long do I cook chicken on the grill”). In some implementations,determining the automated assistant action is based on determining theautomated assistant action is related to one or more non-automatedassistant interactions of the user. For example, an “adjust the smartthermostat to 72°” automated assistant action can be determined based ondetecting one or more occurrences of the user adjusting the smartthermostat manually (e.g., through direct interaction with the smartthermostat) or adjusting the smart thermostat via a non-automatedassistant application that is directed to control of the smartthermostat. The detecting can be based on, for example, a state changeindication that is transmitted to the automated assistant and thatindicates the smart thermostat was adjusted to 72°. The state changeindication can be transmitted to the automated assistant by an agentthat controls the smart thermostat, and can be pushed or provided inresponse to a state request from the automated assistant. In someimplementations, determining the automated assistant action is based ondetermining the action may improve human-automated assistantinteractions, without necessarily determining the user has performed theautomated assistant action and/or related actions.

Selecting a subset of automated assistant routine(s) of a user, to whichto recommend adding an automated assistant action, based on comparingthe action to the routine(s), can increase the likelihood that correctroutine(s) (if any) are recommended for the action, thereby mitigatingrisk of providing recommendations that will be ignored or dismissed.Further, rendering of a subset of automated assistant routines, in lieuof the entirety of the routines of the user, can conserve resourcesutilized in the rendering. In some implementations, the subset ofautomated assistant routines are selected based on comparing temporalattributes of past occurrences of the routines to temporal attributes ofpast occurrence(s) of the automated assistant action (or of an actionrelated to the automated assistant action). For example, if pastoccurrences of an automated assistant action for a user have occurredonly on weekday mornings, then a routine of the user that is frequentlyinitiated on weekday mornings can be more likely to be selected for thesubset than a routine of the user that is frequently initiated onweekday evenings, or a routine of the user that is frequently initiatedon weekend mornings.

In some implementations, the subset of automated assistant routines areselected based on additionally or alternatively comparing devicetopology attribute(s) of device(s) utilized in the routines to devicetopology attribute(s) of device(s) utilized in the automated assistantaction. For example, if an automated assistant action relates to controlof a television having an assigned device topology attribute of“location=living room”, then a routine that includes action(s) thatcontrol other device(s) having the assigned device topology attribute of“location=living room” (e.g., living room lights, living room speaker,etc.) can be more likely to be selected for the subset than a routinethat lacks any action that controls a device having a “location=livingroom” device topology attribute. As another example, if an automatedassistant action requires display of content via a device having anassigned device topology attribute of “display capable”, then a routinethat includes actions that control device(s) that are located in areashaving a device with a “display capable” device topology attribute canbe more likely to be selected for the subset than a routine that lacksany action that controls a device in an area having a device with a“display capable” device topology attribute.

In some implementations, the subset of automated assistant routines areselected based on additionally or alternatively excluding, from thesubset, any routines that include a contradiction with the automatedassistant action. For example, for an “adjust the smart thermostat to72°” automated assistant action, a given routine can be excluded basedon it having a conflicting “adjust the smart thermostat to 75°” action.Also, for example, for an automated assistant action that interfaceswith an agent to perform a service that is only available in theevenings, a given routine can be excluded based on it occurringautomatically in the mornings and not in the evenings.

In some implementations, multiple competing actions for adding to anautomated assistant routine can be considered, and only a subset of(e.g., one of) the competing actions can be selected for actuallyrecommending, via user interface output, for addition to a routine. Insome of those implementations, each of the multiple competing actionscan be compared to the routine and the selected action can be one of themultiple competing actions that most closely conforms to the routine,lacks any conflicts with the routine, and/or satisfies other criteria.In some additional or alternative implementations, the multiplecompeting actions can include a first action performed by a first agentand a second action performed by a second agent. For example, the firstaction can be causing jazz music to be rendered by a first agent thatstreams music and the second action can be causing jazz music to berendered by a second agent that streams music. In some of thoseimplementations, one of the first agent and the second agent can beselected based on one or more measures associated with the first agentand the second agent. Such measures can include, for example, frequencyof use of the first agent and/or the second agent by the user; frequencyof use of the first agent and/or the second agent by a population ofusers; ratings assigned to the first agent and/or the second agent (bythe user and/or a population of users); and/or data provided by, or onbehalf of, the first agent and/or the second agent that indicates anability and/or desire of the respective agent(s) to perform the action.

In some implementations, user interface output that prompts the user toadd an automated assistant action to at least one selected automatedassistant routine can be provided at a conclusion of a performance ofthe selected routine, or a conclusion of a performance of the automatedassistant action. For example, after performing a “Good Morning”routine, the automated assistant can provide a graphical and/or audibleprompt of “by the way, it looks like Action X would be good to add tothis routine, want me to add it” and, if affirmative input is receivedin response, “Action X” can be added to the “Good Morning” routine.Also, for example, after performing “Action X” in response to userinterface input of the user (e.g., spoken input of “Assistant, performAction X”), the automated assistant can provide a graphical and/oraudible prompt of “by the way, it looks like this would be good to addto your Good Morning routine, want me to add it”. If affirmative inputis received in response, “Action X” can be added to the “Good Morning”routine. In these and other manners, the presented user interface outputfurthers a human-automated assistant interaction and, if affirmativeinput is received in response, reduces a quantity of user inputs thatwill be required in the future to perform both the preexisting actionsof the routine, and the action added to the routine. For example,“Action X” can be controlling a connected device and the presented userinterface input can further a human-automated assistant interaction byenabling a user to provide affirmative input in response and, as aresult, causing controlling of the connected device to occurautomatically in response to a further initiation of a correspondingroutine.

In some implementations, in adding an automated assistant action to aroutine, a position of performance of the automated assistant action,among preexisting actions of the routine, can be determined. In someversions of those implementations, the position can be determined basedon a duration of user interface output (if any) that is required by theautomated assistant action and duration(s) of user interface output (ifany) that are required by the preexisting actions of the routine. Forexample, if the automated assistant action is controlling a smart deviceand requires no user interface output (or a very brief “devicecontrolled” output), it can be positioned so that it is performed priorto one or more action(s) that require more enduring user interfaceoutput to be rendered. In some additional or alternative versions, theposition of performance can be last, and can optionally occur with atemporal delay. The temporal delay can be based on, for example,temporal delay(s) of past performance of the automated assistant action(in response to past input(s) of the user) relative to past performancesof the routine. For example, assume the automated assistant action isstarting a brew cycle for a smart coffee maker and is added to a “GoodMorning” routine. Further assume the automated assistant action waspreviously performed (prior to adding to the “Good Morning” routine)three times following conclusion of the good morning routine, inresponse to spoken utterances of “Assistant, brew my coffee”. If thethree spoken utterances occurred two minutes, three minutes, and fourminutes following conclusion of the good morning routine, the automatedassistant action can be added to the good morning routine with atemporal delay, such as a three minute (average of the three delays)temporal delay.

As referenced above, some automated assistant routines can beinitialized in response to detecting a shortcut phrase or command inspoken or typed natural language input of a user. The shortcut commandprovides an abbreviated command for causing an automated assistant toperform a set of actions optionally in a particular sequence. Providinga shortcut command to cause performance of a set of actions in lieu oflonger commands for the set of actions, can enable less user input to beprovided (and transmitted and/or processed), thereby conservingcomputational and network resources. Additionally, automatically addingan automated assistant action as an additional action of a routine to beperformed in response to an existing shortcut command, thereafterenables the additional action and the preexisting actions of the routineto be performed in response to the shortcut command. Thus, the shortcutcommand can thereafter be spoken or typed by the user in lieu ofspeaking both a command for the additional action and the shortcutcommand. As one example of an abbreviated command for an automatedassistant routine, when a user wakes up in the morning, the user cantrigger a “Good Morning” routine by providing a spoken utterance to akitchen assistant device (i.e., a client computing device located in thekitchen). The spoken utterance can be, for example, “Good Morning,”which can be processed by the assistant device and/or a remote assistantdevice (in communication with the assistant device) for initializing the“Good Morning” routine. For example, the assistant device and/or theremote device can process audio data corresponding to the spokenutterance to convert the spoken utterance to text, and can furtherdetermine the text “Good Morning” is assigned, for the user, to a set ofautomated assistant actions to be performed in response to a spokenutterance of “Good Morning”. Adding a new action to the “Good Morning”routine in accordance with implementations described herein furtherassigns the new action, for the user, to the text “Good Morning”.

Although various automated assistant routines can be initialized inresponse to a spoken or typed shortcut command, in some implementations,an automated assistant routine can additionally or alternatively beinitialized in response to a user pressing a virtual or hardware elementat a client device or peripheral device, performing a gesture that isdetected via sensor(s) of a client device, providing other tactileinput(s) at the client device, and/or providing any other type ofcomputer-readable user interface input. For example, a graphical userinterface (GUI) can be presented at a client device with a selectableicon, where the selectable icon provides a suggestion for the user toinitialize the automated assistant routine. When the user selects theselectable icon (e.g., a GUI button that says “Good Morning”), theautomated assistant can initialize the corresponding automated assistantroutine in response. Additionally, or alternatively, an automatedassistant routine can be initialized automatically, for instance, inresponse to an automated assistant detecting presence of a user (e.g.,detecting a particular user using voice authentication and/or facialrecognition), location of a user (e.g., detecting a particular userusing voice authentication and/or facial recognition in a location suchas at home, in the car, in the living room, and/or additionallocation(s)) an alarm being dismissed (e.g., a wake alarm set on anassociated phone or other device), opening of an application, and/orother user action that can be recognized by an automated assistant(e.g., based on signals from one or more client devices). For example, a“Good Morning” routine can be initialized when a user is detected in thekitchen using facial recognition in “the morning” (i.e., at a specifictime, during a range of times, and/or additional time(s) associated withthe routine).

An example “Good Morning” routine can include actions such as causing aschedule of the user to be rendered, causing a particular appliance tobe turned on, and causing a podcast to be rendered. Again, by enablingthe automated assistant to be responsive to shortcut commands, the userdoes not necessarily need to provide a string of commands in order tocause the automated assistant to perform the corresponding actions(e.g., the user would not need to recite the spoken utterance:“Assistant, read me my schedule, turn on my appliance, and play mypodcast.”). Instead, the automated assistant can be responsive to ashortcut command, which the automated assistant can process in order toidentify the actions corresponding to the shortcut command. In someimplementations, a routine can be personalized, thereby enabling aparticular shortcut command or other input that causes performance of aroutine to cause a particular set of actions to be performed by theautomated assistant for one user, whereas the same input would cause adifferent set of actions to be performed by the automated assistant fora different user. For example, a particular user may specificallyconfigure the automated assistant to perform a first set of actions inresponse to a shortcut command, and a spouse of the particular user canconfigure the automated assistant to perform a second set of actions inresponse to the same shortcut command. The automated assistant candistinguish between users that provide the shortcut command using one ormore sensor inputs and/or one or more determined characteristics such asvoice signatures, facial recognition, image feeds, motioncharacteristics, and/or other data. Moreover, as described herein, theautomated assistant can distinguish between users in determiningautomated assistant actions to be recommended to a given user, indetermining automated assistant routine(s) that are specific to theuser, and in determining when to provide user interface output thatprompts for adding an automated assistant action to a routine of theuser (e.g., user interface output particularized to a user can beprovided only when it is determined that user is interacting with theautomated assistant).

When a user provides a shortcut command, such as “Good Morning,” to anassistant device, such as a kitchen assistant device, contentcorresponding to one or more actions of the routine can be initiallyrendered by the kitchen assistant device as a result of the spokenutterance being directed to the kitchen assistant device. For example,the content can initially be rendered exclusively at the kitchenassistant device (i.e., without simultaneously being rendered at anyother client devices), despite other devices acknowledging the shortcutcommand. For example, multiple devices can acknowledge a shortcutcommand being received at their respective automated assistantinterfaces, however, the device that receives the loudest and/or leastdistorted shortcut command can be designated as the device at which theautomated assistant routine will be initialized.

If a user performs an action in an office with an office assistantdevice, the automated assistant can still suggest adding the action tothe “Good Morning” routine. For example, if the user moves to theiroffice after completing their “Good Morning” routine in the kitchen andthen asks the office assistant device a spoken utterance regarding newsheadlines, the automated assistant can suggest adding the action ofrendering news headlines to the “Good Morning” routine performed in thekitchen via the kitchen assistant device. In some implementations, theoffice assistant device can suggest adding actions performed in theoffice (i.e., rendering news headlines) to the “Good Morning” routine,even though the action is performed at a different device than the “GoodMorning” routine. In some implementations, the office device can beutilized to suggest adding the action to render news headlines to the“Good Morning” routine while the user is the office after the user hasasked the office assistant for news headlines. In other implementations,the kitchen assistant device can suggest the user add the new action ofrendering news headlines to the “Good Morning” routine after thecompletion of the “Good Morning” routine while the user is still inproximity to the kitchen device. Additionally or alternatively, in someimplementations the automated assistant can suggest to a user to add theaction historically performed in the office when the user is detected inproximity of the kitchen device before the “Good Morning” routine isperformed but after the user requests the routine through the shortcutcommand by the kitchen device.

In some implementations, limitations can be placed on the adding actionsto automated assistant routines. For instance, a user that lives with aspouse may have a “Good Morning” routine and their spouse may have theirown “Good Morning” routine. The user may not wish to add actions totheir spouse's good morning routine (and vice versa). In someimplementations, an automated assistant can determine if the user ortheir spouse is performing the action through sensor inputs and/or oneor more determined characteristics such as voice signatures, facialrecognition, image feeds, motion characteristics, and/or other data. Insome implementations, the default setting on automated assistantroutines in a multi user household can be for only the user of theroutine to have permissions to modify their personal routines. In someimplementations, a user can give permission to the automated assistantto allow other users, (such as their spouse) to add actions to theirpersonal routines. Additionally, in some implementations, beforesuggesting a routine to add an action, an automated assistant can reviewactions in similar routines for other members of the household, ifappropriate consents are obtained. For example, before suggesting addingan action to turn on a device such as a smart coffee maker to a user'sgood morning routine, the automated assistant can review the goodmorning routine of the spouse and determine if the action is alreadybeing performed in the household for the morning. In other words, whendetermining routines to suggest adding an action, the automatedassistant can review the routines of a user and compare them withroutines associated with other members of the household to, for example,prevent duplicate actions such as two users both turning on the coffeemaker in the morning as part of their “Good Morning” routines.

In some implementations, in executing a routine, an automated assistantinterfaces with one or more local and/or remote agents. For example, fora routine that includes three actions, an automated assistant caninterface with a first agent in performing the first action, a secondagent in performing the second action, and a third agent in performing athird action. As used herein, an “agent” references one or morecomputing devices and/or software that are utilized by an automatedassistant. In some situations, an agent can be separate from theautomated assistant and/or may communicate with the automated assistantover one or more communication channels. In some of those situations,the automated assistant may transmit, from a first network node, data(e.g., an agent command) to a second network node that implements all oraspects of the functionality of the agent. In some situations, an agentmay be a third-party (3P) agent, in that it is managed by a party thatis separate from a party that manages the automated assistant. In someother situations, an agent may be a first-party (1P) agent, in that itis managed by the same party that manages the automated assistant.

An agent is configured to receive (e.g., over a network and/or via anAPI) an invocation request and/or other agent commands from theautomated assistant. In response to receiving an agent command, theagent generates responsive content based on the agent command, andtransmits the responsive content for the provision of user interfaceoutput that is based on the responsive content. For example, the agentmay transmit the responsive content to the automated assistant forprovision of output, by the automated assistant, that is based on theresponsive content. As another example, the agent can itself provide theoutput. For instance, the user can interact with the automated assistantvia a client device (e.g., the automated assistant can be implemented onthe client device and/or in network communication with the clientdevice) and the agent can be an application installed on the clientdevice or an application executable remote from the client device, but“streamable” on the client device. When the application is invoked, itcan be executed by the client device and/or brought to the forefront bythe client device (e.g., its content can take over a display of theclient device).

The above is provided as an overview of various implementationsdisclosed herein. Additional detail is provided herein regarding thosevarious implementations, as well as additional implementations.

In some implementations, a method implemented by one or more processorsis provided and includes determining an action initiated by an automatedassistant. The action is initiated by the automated assistant inresponse to one or more instances of user interface input provided by auser via one or more automated assistant interfaces that interact withthe automated assistant. The method further includes identifying aplurality of automated assistant routines that are stored in associationwith the user. Each of the automated assistant routines define multiplecorresponding actions to be automatically performed via the automatedassistant in response to initialization of the automated assistantroutine, and the action is in addition to the actions of the automatedassistant routines. The method further includes comparing the action tothe plurality of automated assistant routines that are stored inassociation with the user. The method further includes selecting, basedon the comparing, a subset of the automated assistant routines that arestored in association with the user. The method further includes, basedon the action being initiated in response to user interface inputprovided by the user, and based on selecting the subset of the automatedassistant routines: causing user interface output to be rendered via aclient device of the user. The user interface output prompts the user toadd the action to one or more of the automated assistant routines of thesubset. The method further includes receiving affirmative user interfaceinput in response to the user interface output, where the affirmativeuser interface input indicates a given routine of the automatedassistant routines of the subset. The method further includes, inresponse to receiving the affirmative user interface input,automatically adding the action as an additional one of the multiplecorresponding actions of the given routine to be automatically performedin response to initialization of the given routine.

These and other implementations of the technology disclosed herein caninclude one or more of the following features.

In some implementations, the one or more instances of user interfaceinput include one or more spoken utterances that, when converted totext, is first text of a first length. In those implementations,initialization of the given routine occurs in response to a given spokenutterance that, when converted to text, is second text of a secondlength, and the second length is shorter than the first length.

In some implementations, causing the user interface output to berendered via the client device of the user is further based onperforming the given routine and occurs at a conclusion of performingthe given routine.

In some implementations, the one or more instances of user interfaceinput that initiated the action include a spoken utterance. In someversions of those implementations, the method further includesidentifying a profile of the user based on one or more voicecharacteristics of the spoken utterance. In those versions, identifyingthe plurality of automated assistant routines that are stored inassociation with the user includes identifying the plurality ofautomated assistant routines based on the plurality of automatedassistant routines being stored in association with the profile of theuser. Further, in those versions, performing the given routine can occurin response to an additional spoken utterance from the user, and causingthe user interface output to be rendered via the client device of theuser can be further based on determining the additional spoken utterancehas one or more voice characteristics that correspond to the profile ofthe user.

In some implementations, causing the user interface output to berendered via the client device of the user occurs at a conclusion of theaction initiated by the automated assistant in response to the one ormore instances of user interface input.

In some implementations, the action includes providing a command toalter at least one state of a connected device that is managed by theautomated assistant.

In some implementations, the action includes providing a command to anagent controlled by a third party that is distinct from a party thatcontrols the automated assistant.

In some implementations, selecting the subset of the automated assistantroutines includes: comparing the action with each of the multiplecorresponding actions in each of the automated assistant routines; basedon the comparing and for each of the automated assistant routines,determining if the action includes one or more contradictions with anyof the multiple corresponding actions in the automated assistantroutine; and selecting the subset of the automated assistant routinesbased on determining the multiple corresponding actions of the automatedassistant routines of the subset lack the one or more contradictionswith the action.

In some implementations, the one or more contradictions include atemporal contradiction and/or a device incompatibility contradiction.The temporal contradiction can include being unable to complete theaction during a time frame of each of the multiple correspondingactions. The device incompatibility contradiction can include the actionrequiring a device having certain capabilities and each of the multiplecorresponding actions not being associated with any device having thecertain capabilities.

In some implementations, automatically adding the action includesdetermining a position for performing the action in the given routine,where the position is relative to the multiple corresponding actions ofthe given routine. In some versions of those implementations, theposition for performing the action is before the multiple correspondingactions, after the multiple corresponding actions, or between two of themultiple corresponding actions. In some of those versions, the positionis after the multiple corresponding actions and includes a temporaldelay. The temporal delay can be based on one or more past temporaldelays in past initiations of the action, by the user, following one ormore past initiations of the given routine by the user.

In some implementations, the one or more instance of user interfaceinput that initiated the action are received via an additional clientdevice that is linked to, but separate from, the client device via whichthe user interface output is rendered.

In some implementations, the user interface output includes graphicaloutput and the method further includes selecting the additional clientdevice for providing the user interface output based on determining theclient device lacks display capabilities and the additional clientdevice includes display capabilities.

In some implementations, the one or more instance of user interfaceinput that initiated the action include a spoken utterance, and themethod further includes identifying a profile of the user based on oneor more voice characteristics of the spoken utterance. In some of thoseimplementations, identifying the plurality of automated assistantroutines that are stored in association with the user is based on theplurality of automated assistant routines being stored in associationwith the profile of the user that is identified based on the voicecharacteristics of the spoken utterance.

In some implementations, a method implemented by one or more processorsis provided and includes determining an automated assistant action andidentifying a plurality of automated assistant routines that are storedin association with a user. Each of the automated assistant routinesdefines multiple corresponding actions to be automatically performed viathe automated assistant in response to initialization of the automatedassistant routine. The determined automated assistant action can be inaddition to the multiple corresponding actions of the automatedassistant routines. The method further includes comparing the automatedassistant action to the plurality of automated assistant routines thatare stored in association with the user. The method further includesselecting, based on the comparing, a subset of the automated assistantroutines that are stored in association with the user. The methodfurther includes determining, based on sensor data from one or moresensors of a client device that the user is interacting with the clientdevice. The method further includes, based on determining that the useris interacting with the client device, and based on selecting the subsetof the automated assistant routines, causing user interface output to berendered via the client device, where the user interface output promptsthe user to add the automated assistant action to one or more of theautomated assistant routines of the subset. The method further includesreceiving affirmative user interface input in response to the userinterface output, where the affirmative user interface input indicates agiven routine of the automated assistant routines of the subset. Themethod further includes, in response to receiving the affirmative userinterface input: adding the automated assistant action as an additionalone of the multiple corresponding actions of the given routine to beautomatically performed in response to initialization of the givenroutine.

In some implementations, the adding is performed responsive to receivingthe affirmative user interface input and without requiring any furtheruser interface input.

In some implementations, the sensor data includes voice data that isbased on one or more microphones of the client device, and determiningthat the user is interacting with the client device includes:determining one or more voice characteristics based on the voice data;and identifying the user based on the voice characteristics conformingto a profile of the user.

In some implementations, the automated assistant action includescontrolling a particular connected device. In some versions of thoseimplementations, comparing the automated assistant action to theplurality of automated assistant routines that are stored in associationwith the user includes: determining, based on a device topology ofconnected devices of the user, that the particular connected device andan additional connected device, controlled by least one of the multiplecorresponding actions of the given routine, are both assigned to a samephysical location in the device topology. In some of those versions,selecting, based on the comparing, the given routine for inclusion inthe subset includes selecting the given routine for inclusion in thesubset based on determining that the particular connected device and theadditional connected device are both assigned to the same physicallocation. The same physical location can be, for example, a userassigned semantic identifier of a room within a home of the user.

In some implementations, the automated assistant action includescontrolling a particular connected device and determining the automatedassistant action includes: determining, based on a reported state of theparticular connected device, that the particular connected device wascontrolled in a particular manner in response to a non-automatedassistant interaction; and determining the automated assistant action tocause the particular connected device to be controlled in the particularmanner.

In some implementations, comparing the automated assistant action to theplurality of automated assistant routines that are stored in associationwith the user includes: determining at least one action temporalproperty of the automated assistant action based on one or more pastperformances of the automated assistant action, or a related action, bythe user; determining at least one routine temporal property of theautomated assistant routine based on one or more past performances ofthe automated assistant routine; and comparing the at least one actiontemporal property to the at least one routine temporal property.

In some implementations, the automated assistant action includesinteraction with a third party agent controlled by a particular thirdparty, and determining the automated assistant action includesdetermining a past performance, by the user, of a separate interactionwith a separate third party.

In some implementations, determining the automated assistant action isbased on determining a relationship between a separate interaction andthe automated assistant action.

In addition, some implementations include one or more processors of oneor more computing devices, where the one or more processors are operableto execute instructions stored in associated memory, and where theinstructions are configured to cause performance of any of theaforementioned methods. Some implementations also include one or morenon-transitory computer readable storage media storing computerinstructions executable by one or more processors to perform any of theaforementioned methods.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating an example environment in whichvarious implementations can be implemented.

FIG. 2 is a diagram illustrating an example interaction between a userand an automated assistant.

FIG. 3 is a diagram illustrating another example interaction between auser and an automated assistant.

FIG. 4 is a flowchart illustrating an example process according toimplementations disclosed herein.

FIG. 5 is a block diagram illustrating an example architecture of acomputing device.

DETAILED DESCRIPTION

Implementations disclosed herein are directed to methods, apparatus, andcomputer-readable media (transitory and non-transitory) for determiningwhether to recommend an automated assistant action be incorporated intoan automated assistant routine for a user. In some of thoseimplementations, user interface output is rendered for presentation tothe user when it is determined to recommend an action be incorporatedinto a routine. The user interface output can prompt the user as towhether he/she desires to add the action to the routine. Further, insome versions of those implementations, the action is added to theroutine in response to affirmative user interface input being receivedin response to the user interface output. For example, the action can beautomatically added to the routine in response to affirmative userinterface input being received.

An example routine can be a morning routine, in which an automatedassistant performs multiple different actions sequentially in themorning in order to prepare a user for their day. For instance, amorning routine can involve the automated assistant causing a scheduleof the user for a particular day (e.g., the current day) to be audiblyrendered via a client device, the automated assistant causing a device(e.g. smart lighting) to turn on, and then causing a podcast to beaudibly rendered via the client device while the user is getting ready.After the completion of the morning routine, the user may causeperformance an action which could be included in the morning routine.For example, the user may provide a spoken utterance to an assistantinterface of a second client device after the morning routine iscompleted, where the spoken utterance causes the automated assistant toturn on an appliance associated with the automated assistant (e.g. asmart coffee maker). Based at least in part on temporal proximity ofperformance of the morning routine, and the user providing the spokenutterance that causes the automated assistant to turn on the appliance,a “turn on the appliance” action can be recommended for inclusion in themorning routine. If the user accepts the recommendation, the “turn onthe appliance” action can be automatically added to the routine.Thereafter, instead of the user having to give the assistant a separatecommand to turn on the appliance, the automated assistant can cause theappliance to be turned on in response to initiation of the morningroutine.

Turning now to the figures, FIG. 1 illustrates an example environment100 in which various implementations can be implemented. The exampleenvironment 100 includes one or more client devices 102. Each clientdevice may execute a respective instance of an automated assistantclient 112. One or more cloud-based automated assistant components 116,such as natural language processor 122 and/or routine module 124, may beimplemented on one or more computing systems (collectively referred toas a “cloud” computing system) that are communicatively coupled toclient device 102 via one or more local and/or wide area networks (e.g.,the internet) indicated generally as 114.

In various implementations, the instance of an automated assistantclient 108, by way of its interactions with one or more cloud-basedautomated assistant components 116, may form what appears to be, fromthe user's perspective, a logical instance of an automated assistant 112with which the user may engage in a dialog. One such instance of anautomated assistant 112 is depicted in FIG. 1 by a dashed line. It thusshould be understood that each user that engages with an automatedassistant client 108 executing on client device 102, may, in effect,engage with their own logical instance of automated assistant 112. Forthe sake of brevity and simplicity, the term “automated assistant” asused herein as “serving” a particular user may often refer to thecombination of an automated assistant client 108 operated by the userand one or more cloud-based automated assistant components 116 (whichmay be shared amongst multiple automated assistant clients 108). Itshould also be understood that in some implementations, automatedassistant 112 may respond to a request from any user regardless ofwhether the user is actually “served” by that particular instance ofautomated assistant 112.

Client device 102 may include, for example, one or more of: a desktopcomputing device, a laptop computing device, a tablet computing device,a touch sensitive computing device (e.g., a computing device which canreceive input via touch from the user), a mobile phone computing device,a computing device in a vehicle of the user (e.g., an in-vehiclecommunications system, an in-vehicle entertainment system, an in-vehiclenavigation system), a standalone interactive speaker, a smart appliancesuch as a smart television, and/or a wearable apparatus of the user thatincludes a computing device (e.g., a watch of the user having acomputing device, glasses of the user having a computing device, avirtual or augmented reality computing device). Additional and/oralternative client computing devices may be provided.

In various implementations, client device 102 may include one or moresensors (not pictured) that may come in various forms. Sensors can sensevarying types of input to the automated assistant 112 such as verbal,textual, graphical, physical (e.g., a touch on a display deviceincluding a touch sensitive projector and/or a touch sensitive screen ofa computing device), and/or visual (e.g., a gesture) based input. Someclient devices 102 may be equipped with one or more digital cameras thatare configured to capture and provide signal(s) indicative of movementdetected in the fields of view. Additionally or alternatively, someclient devices may be equipped with sensors that detect acoustic (orpressure) waves, such as one or more microphones.

Client device 102 and/or cloud-based automated assistant components 116can be in communication with one or more devices 104. Devices 104 caninclude any of a variety of devices including: Internet of Thingsdevices such as smart appliances, smart thermostats, smart coffeemakers, smart lights, smart locks, etc. The devices 104 are linked withthe client device 102 (and/or a particular user of the client device102) and with one another. For example, the devices 104 can be linked toa profile assigned to the client device 102 (and optionally other clientdevices) and/or can be linked to a profile assigned to a user of theclient device 102. Collectively, the client device 102, other clientdevice(s), and the devices 104 can define a coordinated ecosystem ofdevices. In various implementations, devices are linked to one anothervia a device topology representation that can be user created, and/orautomatically created, and that may define various assistant clientdevices, various smart devices, identifier(s) for each, and/orattribute(s) for each. For example, the identifier(s) for a device canspecify a room (and/or other area(s)) of a structure in which the deviceis located (e.g., living room, kitchen) and/or can specify nickname(s)and/or aliase(s) for the device (e.g. couch lamp, front door lock,bedroom speaker, kitchen assistant, etc.). In this manner, theidentifiers of devices can be names, aliases, and/or locations of therespective devices that the user is likely to associate with therespective devices. As described herein, such identifier(s) can beutilized in various implementations disclosed herein. For example, suchidentifier(s) can be utilized in determining whether an automatedassistant action conforms to an automated assistant routine.

Devices 104 can be directly controlled by automated assistant 112 and/ordevices 104 can be controlled by one or more third party agents 106hosted by remote device(s) (e.g., another cloud-based component).Furthermore, one or more third party agents 106 can also performfunction(s) that are in addition to controlling devices 104 and/orcontrolling other hardware devices. For example, the automated assistant112 can interact with a third party agent 106 to cause a service to beperformed, a transaction to be initiated, etc. For instance, a uservoice command “order a large pepperoni pizza from Agent X” can cause theautomated assistant client 108 (or cloud-based automated assistantcomponent(s) 116) to send an agent command to a third party agent “AgentX”. The agent command can include, for example, an intent value thatindicates an “ordering” intent determined from the voice command, aswell as optional slot values such as “type=pizza”, “toppings=pepperoni”,and “size=large”. In response, the third party agent can cause an orderfor a large pepperoni pizza to be initiated and provide, to theautomated assistant 112, content that indicates the order wassuccessfully initiated. The content (or a conversion thereof) can thenbe caused to be rendered to the user via output device(s) (e.g.,speaker(s) and/or display(s)) of the client device 102. As describedherein, some implementations can recommend that the “order a largepepperoni pizza from Agent X” action and/or similar actions be added toan existing routine of a user. When added to an existing routine of theuser, the “order a large pepperoni pizza from Agent X” automatedassistant action can then be initiated in response to initiation of theexisting routine, without the user having to separately provide a spokenutterance of “order a large pepperoni pizza from Agent X”. Accordingly,transmission and/or processing of audio data that captures such a spokenutterance can be obviated, thereby conserving computer and/or networkresources.

In many implementations, automated assistant 112 may engage in dialogsessions with one or more users via user interface input and outputdevices of one or more client devices 102. In some implementations,automated assistant 112 may engage in dialog sessions with a user inresponse to user interface input provided by the user via one or moreuser interface input devices of one of the client devices 102. In someof those implementations, the user interface input is explicitlydirectly to automated assistant 112. For example, a user may speak apredetermined invocation phrase, such as “OK, Assistant,” or “Hey,Assistant,” to cause automated assistant 112 to begin activelylistening. In many implementations, a user may speak a predeterminedshortcut phrase to begin running a routine such as “OK Assistant, GoodMorning” to begin running a good morning routine.

In some implementations, automated assistant 112 may engage in a dialogsession in response to user interface input, even when that userinterface input is not explicitly directly to automated assistant 112.For example, automated assistant 112 may examine the contents of userinterface input and engage in a dialog session in in response to certainterms being present in the user interface input and/or based on othercues. In many implementations, automated assistant 112 may utilizespeech recognition to convert utterances from users into text, andrespond to the text accordingly, e.g., by providing visual information,by providing search results, by providing general information, and/ortaking one or more response actions (e.g., playing media, launching agame, ordering food, etc.). In some implementations, the automatedassistant 112 can additionally or alternatively respond to utteranceswithout converting the utterances into text. For example, the automatedassistant 112 can convert voice input into an embedding, into entityrepresentation(s) (that indicate entity/entities present in the voiceinput), and/or other “non-textual” representations and operate on suchnon-textual representations. Accordingly, implementations describedherein as operating based on text converted from voice input myadditionally and/or alternatively operate on the voice input directlyand/or other non-textual representations of the voice input.

Each of the client computing devices 102 and computing device(s)operating cloud-based automated assistant components 116 may include oneor more memories for storage of data and software applications, one ormore processors for accessing data and executing applications, and othercomponents that facilitate communication over a network. The operationsperformed by one or more computing device 102 and/or automated assistant112 may be distributed across multiple computer systems. Automatedassistant 112 may be implemented as, for example, computer programsrunning on one or more computers running in one or more locations thatare coupled to each other through a network.

As noted above, in various implementations, client computing device 102may operate an automated assistant client 108. In variousimplementations, each automated assistant client 108 may include acorresponding speech capture/text-to-speech (“TTS”)/speech-to-text(“STT”) module 110. In other implementations, one or more aspects ofspeech capture/TTS/STT module 110 may be implemented separately from theautomated assistant client 108.

Each speech capture/TTS/STT module 110 may be configured to perform oneor more functions: capture a user's speech, e.g., via a microphone(which in some cases may comprise sensors in client device 102); convertthat captured audio to text (and/or to other representations orembeddings); and/or convert text to speech. For example, in someimplementations, because a client device 102 may be relativelyconstrained in terms of computing resources (e.g., processor cycles,memory, battery, etc.), the speech capture/TTS/STT module 110 that islocal to each client device 102 may be configured to convert a finitenumber of different spoken phrases—particularly phrases that invokeautomated assistant 112—to text (or other forms, such as lowerdimensionality embeddings). Other speech input may be sent tocloud-based automated assistant components 116, which may includecloud-based TTS module 118 and/or cloud-based STT module 120.

Cloud-based STT module 120 may be configured to leverage the virtuallylimitless resources of the cloud to convert audio data captured byspeech capture/TTS/STT module 110 into text (which may then be providedto natural language processor 122). Cloud-based TTS module 118 may beconfigured to leverage the virtually limitless resources of the cloud toconvert textual data (e.g., natural language responses formulated byautomated assistant 112) into computer-generated speech output. In someimplementations, TTS module 118 may provide the computer-generatedspeech output to client device 102 to be output directly, e.g., usingone or more speakers. In other implementations, textual data (e.g.,natural language responses) generated by automated assistant 112 may beprovided to speech capture/TTS/STT module 110, which may then convertthe textual data into computer-generated speech that is output locally.

Automated assistant 112 (e.g., cloud-based assistant components 116) mayinclude a natural language processor 122, the aforementioned TTS module118, the aforementioned STT module 120, and other components, some ofwhich are described in more detail below. In some implementations, oneor more of the engines and/or modules of automated assistant 112 may beomitted, combined, and/or implemented in a component that is separatefrom automated assistant 112. In some implementations, to protectprivacy, one or more of the components of automate assistant 112, suchas natural language processor 122, speech capture/TTS/STT module 110,routine module 124, etc., may be implemented at least in part on clientdevice 102 (e.g., to the exclusion of the cloud).

In some implementations, automated assistant 112 generates responsivecontent in response to various inputs generated by a user of clientdevice 102 during a human-to-computer dialog session with automatedassistant 112. Automated assistant 112 may provide the responsivecontent (e.g., over one or more networks when separate from a clientdevice of a user) for presentation to the user as part of the dialogsession. For example, automated assistant 112 may generate responsivecontent in response to free-form natural language input provided viaclient device 102. As used herein, free-form input is input that isformulated by the user that is not constrained to a group of optionspresented for selection by the user.

Natural language processor 122 of automated assistant 112 processesnatural language input generate by users via client device 102 and maygenerate annotated output for use by one or more components of automatedassistant 112. For example, the natural language processor 122 mayprocess natural language free-form input that is generated by a user viaone or more user interface input devices of client device 102. Thegenerated annotated output includes one or more annotations of thenatural language input and optionally one or more (e.g., all) of theterms of the natural language input.

In some implementations, the natural language processor 122 isconfigured to identify and annotate various types of grammaticalinformation in natural language input. For example, the natural languageprocessor 122 may include a part of speech tagger configured to annotateterms with their grammatical roles. Also, for example, in someimplementations the natural language processor 122 may additionallyand/or alternatively include a dependency parser (not depicted)configured to determine syntactic relationships between terms in naturallanguage input.

In some implementations, the natural language processor 122 mayadditionally and/or alternatively include an entity tagger (notdepicted) configured to annotate entity references in one or moresegments such as references to people (including, for instances,literary characters, celebrities, public figures, etc.), organizations,locations (real and imaginary), and so forth. The entity tagger of thenatural language processor 122 may annotate references to an entity at ahigh level of granularity (e.g., to enable identification of allreferences to an entity class such as people) and/or a lower level ofgranularity (e.g., to enable identification of all references to aparticular entity such as a particular person). The entity tagger mayrely on content of the natural language input to resolve a particularentity and/or may optionally communicate with a knowledge graph or otherentity database to resolve a particular entity.

In some implementations, the natural language processor 122 mayadditionally and/or alternatively include a coreference resolver (notdepicted) configured to group, or “cluster”, references to the sameentity based on one or more contextual cues. For example, thecoreference resolver may be utilized to resolve the term “there” to“Hypothetical Café” in the natural language input “I liked HypotheticalCafé last time we ate there.”

In many implementations, one or more components of the natural languageprocessor 122 may rely on annotations from one or more other componentsof the natural language processor 122. For example, in someimplementations, the named entity tagger may rely on annotations fromthe coreference resolver and/or dependency parsers in annotating allmentions to a particular entity. Also, for example, in someimplementations the coreference resolver may rely on annotations fromthe dependency parser in clustering references to the same entity. Inmany implementations, in processing a particular natural language input,one or more components of the natural language processor 122 may userelated prior input and/or other related data outside of the particularnatural language input to determine one or more annotations.

Routine module 124 of automated assistant 112 can determine a candidateaction for adding to an automated assistant routine of a user, candetermine a subset of available routines of the user to which torecommend adding the candidate action, can provide a recommendation foradding the action to the routine(s) of the subset, and can add theaction to one of the routines based on affirmative input, that indicatesthe one of the routines, being received in response to therecommendation. Routine module 124 can be implemented by cloud-basedautomated assistant components 116 as depicted, and/or implemented byautomated assistant client 108 of client device 102.

In some implementations, routine module 124 determines automatedassistant actions for potentially recommending for adding to routines ofa user, based on the actions being initiated by the user throughinteracting with one or more instances of automated assistant 112. Insome implementations, the routine module 124 additionally oralternatively determines automated assistant actions for potentiallyrecommending for adding to a routine of a user, based on related, butdifferent, actions being initiated by the user through interacting withone or more instances of automated assistant 112. In someimplementations, the routine module 124 additionally or alternativelydetermines automated assistant actions for potentially recommending foradding to a routine of a user, based on data associated with the userindicating the user has likely performed the actions or related actions.The data associated with the user can include data based on interactionsof the user with other non-automated assistant applications, data basedon states of smart devices in response to direct user control of thosesmart devices, data indicating locations and/or transactions of theuser, etc.

In some implementations, routine module 124 can access a stored list ofroutines for the user, and determine a subset of the routine(s) forwhich to recommend adding a determined automated assistant action. Insome of those implementations, routine module 124 selects the subset ofautomated assistant routines based on comparing temporal attributes ofpast occurrences of the routines to temporal attributes of pastoccurrence(s) of the automated assistant action (or of an action relatedto the automated assistant action). For example, if the automatedassistant action is a “decrease smart thermostat set point 3°” actiondetermined based on past occurrences of the user manually adjusting thesmart thermostat, times for those past occurrences can be determinedbased on times of state updates from the smart thermostat that reflectsthose decreases. Further, a routine of the user that is frequentlyinitiated near (e.g., within an hour of) those times can be more likelyto be selected for the subset than a routine of the user that is rarelyor never initiated near those times.

In some of those implementations, routine module 124 additionally oralternatively selects the subset of automated assistant routines basedon comparing device topology attribute(s) of device(s) utilized in theroutines to device topology attribute(s) of device(s) utilized in theautomated assistant action. For example, if an automated assistantaction relates to control of a component of a vehicle of a user havingan assigned device topology attribute of “location=vehicle”, then aroutine that includes action(s) that control other device(s) having theassigned device topology attribute of “location=vehicle” can be morelikely to be selected for the subset than a routine that lacks anyaction that controls a device having a “location=vehicle” devicetopology attribute.

In some of those implementations, routine module 124 additionally oralternatively selects the subset of automated assistant routinesexcluding, from the subset, any routines that include a contradictionwith the automated assistant action. For example, for a “dim the livingroom lights to 50%” automated assistant action, a given routine can beexcluded based on it having a conflicting “turn off the living roomlights” action. Also, for example, for an automated assistant actionthat interfaces with an agent to perform a service that results inon-demand delivery of items to a home of a user, a given routine can beexcluded based on it being assigned to a “work” location of the user(e.g., explicitly, or based on being associated only with linked deviceshaving a “work” device topology attribute).

In some implementations, routine module considers multiple competingactions for adding to an automated assistant routine, and selects only asubset of (e.g., one of) the competing actions can for actuallyrecommending, via user interface output, for addition to a routine. Insome of those implementations, each of the multiple competing actionscan be compared to the routine and the selected action(s) can be one ormore of those that most closely conform to the routine, lack anyconflicts with the routine, and/or satisfy other criteria.

Regardless of the techniques utilized to determine action(s) and/orroutine(s) to which the action(s) can be added, the routine module 124can cause user interface output to be added that prompts the user as towhether to add the action(s) to the routine(s). In some implementations,in recommending adding an action to a routine, the routine module 124,causes corresponding user interface output to be rendered in response touser interaction with the automated assistant to perform the action(e.g., after the action has been completed in response to the userinteraction). In some implementations, in recommending adding an actionto a routine, the routine module 124, causes corresponding userinterface output to be rendered in response to an initiation of theroutine (e.g., before performing any actions of the routine, or aftercompletion of all actions of the routine).

If affirmative user interface input is received in response to arecommendation provided by routine module 124, the routine module 124can cause the corresponding action to be added to the correspondingroutine. For example, the routine module 124 can add the actionautomatically to the routine without requiring any further userinterface input from the user. In some implementations, in adding anautomated assistant action to a routine, the routine module 124 candetermine a position of performance of the automated assistant action,among preexisting actions of the routine. In some versions of thoseimplementations, the position can be determined based on a duration ofuser interface output (if any) that is required by the automatedassistant action and duration(s) of user interface output (if any) thatare required by the preexisting actions of the routine. In someadditional or alternative versions, the position of performance can belast, and can optionally occur with a temporal delay.

An example of a user interacting with client device to add an action toan automated assistant routine is illustrated in FIG. 2 . Image 200contains a scene of a room including user 202 and client device 204.User 202 interacts with client device 204 via a spoken utteranceindicated in dialog box 206. The spoken utterance of dialog box 206requests that the automated assistant perform an action that causes afive degree increase of a set point of a smart thermostat that is linkedwith the client device 204. The automated assistant associated with theclient device 204 can process the spoken utterance to determine anappropriate command for causing the set point of the smart thermostat tobe increased by five degrees. In some implementations, the automatedassistant associated with the client device 204 can interface directlywith the smart thermostat to change the temperature. For example, theautomated assistant can provide the command directly to the smartthermostat. Additionally or alternatively, the automated assistant caninterface with a third party agent associated with the smart thermostatto change the temperature. For example, the automated assistant canprovide the command to a third part agent which, in turn, generates andtransmits a corresponding command to the smart thermostat to effectuatethe temperature change.

In some implementations, client device 204, as shown in dialog box 208can render audible user interface input confirming that the temperaturehas been increased and can further make a recommendation to addincreasing the temperature by five degrees to the user's “Good Morning”routine. This recommendation can include a prompt asking if the userwants to add the action to the recommended routine. In someimplementations, this recommendation can be made if the user generallyincreases the temperature in the morning after completing their “GoodMorning” routine. In some implementations, this recommendation can bemade even if the user performs the “Good Morning” routine using a firstclient device and the user changes the temperature using a second clientdevice.

Before making this recommendation, the automated assistant associatedwith client device 204 can select the “Good Morning” routine, from aplurality of other routines of the user, as the routine to which the“temperature increase” automated assistant action should be recommendedfor addition. Various techniques can be utilized to select the “GoodMorning” routine to the exclusion of other routines of the user, such asvarious techniques described in detail herein.

The user can decided if they want to add the action to the recommendroutine or not and respond to prompt via a further spoken utteranceindicated by dialog box 210. If the user responds affirmatively to theprompt, as indicated by the spoken utterance of dialog box 210, theautomated assistant automatically adds the action to the “Good Morning”routine of the user. Further, the automated assistant causes furtheraudible user interface output to be provided via the client device 204,as indicated by dialog box 212, where the further audible outputconfirms increasing the temperature by five degrees has been added tothe “Good Morning” routine. However, in some implementations, thisconfirmation can be optional. Additionally or alternatively, clientdevice 204 can confirm the action has been added to the routine the nexttime the user runs the routine. In various implementations where a userhas given, for example, their spouse permission to add actions to theuser's routines, this can provide an additional confirmation to the userthat they want the action added in a particular routine.

In some implementations, user 202 can provide input to the client device204 to cause the client device to interact with one or more third partyagents to cause performance of an action that is not an action thatcontrols a smart device. For example, instead of requesting thetemperature be changed, the user can use the client device 204 to makean online order from the third party agent associated with a “LocalCoffee Shop”, and then pick up their ordered coffee on their way towork. The user can interact with the automated assistant associated withthe client device 204 in making such an order, or with a separateapplication of the client device 204. In many implementations, anautomated assistant associated with client 204 (such as routine module124 thereof that is described above in FIG. 1 ) can determine the coffeeordering action, and determine whether to recommend adding that actionto the “Good Morning” routine and/or other automated assistantroutine(s) of the user. For example, if a user makes a coffee order from“Local Coffee Shop” using client device 204 every morning immediatelyafter the completion of the “Good Morning” routine, the automatedassistant action can determine, based at least in part on the temporalproximity of the action to the “Good Morning” routine, to recommendadding the action to the “Good Morning” routine. In someimplementations, a user can delay making a coffee order from “LocalCoffee Shop” using client device 204 by, for example, an average of 25minutes after the client device 204 completes rendering the “GoodMorning” routine (i.e., the user makes the order as they are leavinghome, which occurs on average 25 minutes after completion of the “GoodMorning” routine), so the user has a hot cup of coffee waiting when theyarrive at “Local Coffee Shop”. In some of those implementations, thecoffee order from “Local Coffee Shop” can still be added to the “GoodMorning” routine, so that it is performed automatically in response toperformance of the “Good Morning” routine, and along with otherpreexisting actions of the “Good Morning” routine. However, theautomated assistant can optionally include a delay (e.g., 25 minutesafter the completion of the last action in the preexisting “GoodMorning” routine) before the “Good Morning” routine makes a coffee orderfrom “Local Coffee Shop” for the user via the third party agent.Additionally or alternatively, the automated assistant can add it to the“Good Morning” routine in a manner that causes a prompt (e.g., “ready toorder your coffee”) to be provided after a delay following completion ofthe last action in the preexisting “Good Morning” routine, and the orderonly initiated if affirmative input is received in response to theprompt.

Additionally or alternatively, in some implementations, if the usermakes a coffee order from “Local Coffee Shop” using client device 204only one time, the automated assistant can review the actions in the“Good Morning” routine. For example, if the routine includes turning ona coffee maker, it is possible the user simply ran out of coffee thatmorning, and the automated assistant should not recommend adding thecoffee order to the “Good Morning” routine. However, in someimplementations, if the user frequently visits “Local Coffee Shop” inthe morning even if they do not preorder coffee in advance using aclient device, the automatic assistant can decide to recommend addingmaking the coffee order action to the “Good Morning” routine.

Furthermore, an automated assistant can suggest adding an automatedassistant action to a routine, even if the user has had no previousinteraction with a third party via which the action will be performed.For example, a user could be unaware of a new coffee shop “New CoffeeShop”, which opened last month and is in a convenient location on theroute between the user's home and work. An action that causes coffee tobe ordered at the “New Coffee Shop” could be recommended for adding to auser's “Good Morning” routine that currently lacks any coffee orderingaction. Additionally or alternatively, in some implementations, theaction that causes coffee to be ordered at the “New Coffee Shop” couldbe recommended for adding to an existing routine, and replacing anexisting action of the routine that causes coffee to be ordered at analternative coffee shop.

In some implementations, a user can be presented with more than oneaction for potentially adding to a routine, where each of the actionsare associated with a different third party agent. For example, a userwho makes a daily morning coffee order via client device 204 from “LocalCoffee Shop” can be presented with a recommendation to add any one ofthree separate actions to an existing “Good Morning” routine. Each ofthe three actions can cause a coffee order to be initiated, but a firstcan cause it to be ordered with “Local Coffee Shop”, a second can causeit to be ordered with ‘New Coffee Shop”, and a third can cause it to beordered with “Classic Coffee Shop”. In some implementations, each of theactions can be presented with corresponding additional information suchas: the amount of time visiting the corresponding coffee shop willincrease and/or decrease the user's commute, the corresponding price ofa coffee order, corresponding rewards program, and/or other informationto help the user make an informed decision regarding which coffee shopto add to their “Good Morning” routine. In some implementations, one ormore of the recommended actions can be recommended based on acorresponding party providing pecuniary consideration for its inclusion.In some implementations, an amount of pecuniary consideration requiredfor inclusion can be related to how closely the action matches theroutine for which it is being suggested for addition, how frequently theroutine is performed by the user, and/or other criteria.

Although spoken utterances of user 202 and audible outputs of clientdevice 204 are illustrated in FIG. 2 , additional or alternative userinputs can be provided by the user 202 and/or content rendered viaadditional or alternative modalities by the client device 204. Forexample, the user 202 could additionally or alternatively provide typedinput, touch inputs, gesture inputs, etc. Also, for example, output canadditionally or alternatively be graphically rendered by the clientdevice 204. As one particular instance, the client device 204 cangraphically render a prompt for adding an action to a routine, alongwith a selectable interface element that can be selected by touchinteraction of the user 202 to cause the action to be automaticallyadded to the routine.

An additional example of a user interacting with a client device to addan action to an automated assistant routine is illustrated in FIG. 3 .Image 300 contains a scene of a room including user 302 and clientdevice 304. User 302 can interact with client device 304 to begin aroutine by providing a spoken utterance that includes a predefinedshortcut phrase. For example, in dialog box 306, user 302 begins a “GoodMorning” routine by providing a spoken utterance that is detected byclient device 304 and that includes the phrase “Good Morning”. Theautomated assistant associated with client device 304 can process audiodata that captures the spoken utterance, determine the spoken utteranceincludes the shortcut phrase for the “Good Morning” routine, and, inresponse cause performance each action in the “Good Morning” routine. Insome implementations, the automated assistant, via client device 304,can ask user 302 upon completion of the routine if they would like toadd an action to the just completed routine. For example, dialog box 308indicates client device 304 has performed the user's “Good Morning”routine and then asks if the user would like to add lighting control totheir “Good Morning” routine. Additionally or alternatively, in someimplementations, client device 304 can ask if a user would like to addlighting control to their “Good Morning” routine before running theroutine, and including the new action as part of running the routine.

In many implementations, the automated assistant associated with clientdevice 304 can determine this recommendation to add a new action to thejust completed routine (in this case the “Good Morning” routine) basedon the user's historical actions. For example, the recommendation can bedetermined based on the user always turning on their smart lights usingthe client device 304 upon completion of the “Good Morning” routine.Additionally or alternatively, in some implementations, a user may havesmart light(s) in their house, but be unaware of the ability to controlthe smart lights utilizing the automated assistant and thus have notpreviously utilized to automated assistant to control the smart lights.In such an example, the automated assistant can make the recommendationbased on determining that the user has not performed the lightingcontrol action, in an attempt to add functionality to user routines theuser might otherwise be unaware of. Additionally or alternatively, insome implementations, the automated assistant can make recommendationbased on determining that control of smart lights is an action thatother users frequently have in related routines. For example, theassistant can make a recommendation, to add lighting control to a “GoodMorning” routine if over 90% of users who have devices required forlighting control (as determined via the user's device topology) alsohave a lighting control action in their “Good Morning” routines.

A user can decided to add the suggested action to the routine or not.For example, dialog box 310 indicates the user affirmatively decided toadd the suggested action (i.e., lighting control) to their “GoodMorning” routine. However, a user is not required to add a recommendaction to a suggested routine. In some implementations, the clientdevice 304 associated with the automated assistant can confirm therecommended action was added to the routine. For example, dialog box 312indicates lighting control has been added the users “Good Morning”routine. However, in various implementations, client device 304 canconfirm with a user that an action has been added to a particularroutine the next time the user runs that routine. In someimplementations, this can provide an additional backup to confirm theuser still wants the new action in the routine and has not changed theirmind the next time the routine. Furthermore, in some implementations, auser can give other's permission to modify their routines. In some suchimplementations, confirming a new action has been added before a userruns a routine can allow a user to confirm an action a different user,such as the user's spouse, added to the user's routine.

A process for determining whether to add an action to an automaticassistant routine in accordance with various implementations isillustrated in FIG. 4 . The process 400 can be performed by one or moreclient devices, and/or any other apparatus capable of interacting withan automated assistant. The process includes determining (402) anautomated assistant action. In some implementations, the action can bedetermined based on having been performed one or more times in responseto interaction by the user with the automated assistant. In someimplementations, actions can include controlling a physical device(e.g., controlling a smart thermostat, turning on a smart coffee maker,controlling a smart speaker, etc.) and/or interacting with a remoteagent (e.g., a calendar agent which can provide a user with a dailyagent, a weather agent which can provide a user with the weather for theday etc.). In some implementations, the action can be determined basedon having been performed by the user historically many times. Forexample, an action for control of certain smart lights can be determinedbased on a user controlling the certain smart lights every night beforegoing to bed, through interaction with the automated assistant, throughmanual interaction, and/or through interaction with an app devoted tocontrol of smart lights. The action can be determined based on beingperformed at least a threshold quantity of times. In someimplementations, the automated assistant action can be determined evenif the user has never caused performance of the action. For example, anaction related to controlling a smart lock can be determined in responseto determining that a smart lock has just been installed by a userand/or added to a topology of linked devices that are controllable by anautomated assistant. For example, a user may have just installed a new,but the smart lock is not associated with any routines.

The automated assistant can identify (404) routines for the user. A usercan have many routines, some of which can overlap. For example, a usercan have a first “Good Morning” routine for the work week and a second“Good Morning” routine for the weekend. Additionally or alternatively, auser can have several routines to pick from when they arrive home fromwork. For example, a user can have a “Veg Out” routine and a “Read aBook” routine. In some implementations, a profile for a user can beidentified, and the set of routines assigned to the profile for the usercan be the identified set of routines associated with that user. In someof those implementations, the set of routines for the profile of theuser are identified for the action determined at (402) based ondetermining the action at (402) was performed for the profile of theuser. Any of a variety of sensors described above with respect to FIG. 1can be used to identify a user profile associated with an input to anautomated assistant (e.g., voice matching based on audio data), and theautomated assistant routines associated with that user profile. In avariety of implementations, a set of routines can be shared betweenmembers of the same household. For example, a user and their spouse mayenjoy cooking together and have a shared “Grilling Night” routine whereboth users interact with one or more automated assistant clients and oneor more client devices. For example, the grilling night routine caninclude the action of turning on the lights in the kitchen, turning onthe grill outside so it can begin warming up, and rendering speakers inboth the kitchen and the outdoor grilling area to play the same music.Both users can interact with devices in the kitchen and the grill atvarious points in time. In some implementations, since it is a sharedroutine, the “Grilling Night” routine can be included on a user profilefor both users and should be considered for both users when potentiallyadding new actions to new routines. Allowing one user to add an actionto a shared routine can further share computational resources since bothusers will not have to manually go through the process of adding a newaction to the shared routine.

A group of automated assistant routines can be selected (406), from thegroup of actions identified at (404), to which to potentially add theaction identified at (402). For example, if the user is performing anaction when they arrive home from work, the “Veg Out” routine and “Reada Book” routine are potential automated assistant routines to add to theaction. However, the automated assistant can compare the action to thoseroutine(s) and/or other routines, to select a group of the automatedassistant routines that is a subset of all available automated assistantroutines. For example, the “Veg Out” routine can include turning on theliving room TV, and turning off the living room lights. In contrast, the“Read a Book” routine can include setting customized lighting for bookreading in the study, and playing soft jazz music in the study. If theuser action is to request information relating to current TV showsplaying that evening, in many implementations, the automated assistantwill select the routine which includes a TV for inclusion in the groupto which to potentially add the action. Furthermore, for example, usinga device topology of linked devices for the user, the automatedassistant can determine there are no devices capable of display in theStudy, the room that is associated with all of the actions for the “BookReading” routine. As a result, the automated assistant can exclude the“Book Reading” routine from the group to which to potentially ad theaction, as the action involves pushing information to a device capableof display, and the “Book Reading” routine is currently associated onlywith a room in which there are no display capable devices. In someimplementations, an automated assistant can analyze the action andcompare it with every action in every routine for the user and/or thelocation where the routine is generally performed to generate the groupof routines to which to potentially add the action.

In some implementations, a potential action can be compared to manyroutines before selecting a routine (or group of routines) topotentially add the action. For example, a user can have four routines:“Party Time”, “Good Morning”, “Good Night”, and “Drive Home”. The “PartyTime” routine can include the actions of rendering party music tospeakers in the living room, adjusting networked lights in the livingroom to flash in a random colored pattern, and ordering a pizza fordelivery via a third party agent from “Local Pizza Shop”. The “GoodMorning” routine can include the actions of rendering that day'sschedule for the user, turning on networked lights in the bedroom,rendering that day's weather for a user, and rendering news headlinesfor a user. The “Good Night” routine for the user can include turningoff all networked lights in the house, rendering tomorrow's schedule forthe user, rendering tomorrow's weather for the user, and rendering whitenoise for two hours for the user. Additionally, the user's “Drive Home”routine can include the actions of rendering the evening schedule forthe user, notifying the user's spouse on another client device the useris driving home, rendering information about group of user determinedstock prices, and rendering a podcast for the remainder of the dive.

As an example, the automated assistant can review the four routines ofthe user and select which routine's to suggest adding the action ofordering a coffee from “Local Coffee Shop”. In a variety ofimplementations, the automated assistant can analyze a variety ofinformation for each routine including: actions included in the routinecompared to the new action, a historical relationship (if any) betweenthe new action and the routine, a temporal relationship (if any) betweenthe new action and the routine, if other users generally have the actionin similar routines, etc. With respect to the “Party Time” routine theautomated assistant can compare the new action of ordering a coffee tothe routine. Other users might generally order coffee before throwing aparty (i.e., so they are awake during the party). The “Party Time” hasinherent time constraints and needs to be run while “Local Pizza Shop”is open. A user may historically order coffee around the same time theyrun the “Party Time” routine (i.e., a user orders an afternoon cup ofcoffee when they are working at home but the user also throw partiesaround the same time in the afternoon) so historical data of when a userruns the “Party Time” routine can indicate it should be a suggestion tothe user. However, the action of ordering a pizza for delivery from“Local Pizza Shop” conflicts with leaving the house to go pick up a cupof coffee (i.e., the user may not be home when the pizza gets deliveredif they have left the house to go pick up a coffee order). Therefore, anautomated assistant generally should not recommend adding the action ofordering a cup of coffee from “Local Coffee Shop” to the “Party Time”routine. Additionally or alternatively, in some implementations, anautomated assistant can look at a user's historical actions afterrunning the “Party Time” routine.

Similarly, the automated assistant can analyze the “Good Morning”routine compared to the new coffee ordering action. Other usersgenerally order coffee in similar routines. “Local Coffee Shop” islikely to be open during the time the user runs their “Good Morning”routine. Additionally, no preexisting actions in the “Good Morning”routine conflict with ordering coffee (e.g., there is no turning on acoffee maker included in the “Good Morning” routine). Furthermore, theuser's actions of ordering coffee in the mornings, around the same timethe user runs the “Good Morning” routine can all be indicators tosuggest adding the new action of making a coffee order from “LocalCoffee Shop” to the “Good Morning” routine.

In contrast, the “Good Night” routine can be performed when “LocalCoffee Shop” is closed which can be an indication to the assistant tonot suggest adding the action. However, in some implementations anautomated assistant can make a recommendation of another coffee shop toorder coffee from if the user's preferred coffee shop is closed. Mostusers do not include ordering coffee in a similar evening routine, whichcan indicate to the automated assistant to not suggest the action.Additionally, user actions in the “Good Night” routine such as turningout networked lighting for the entire house followed by the action ofplaying white noise for two hours contradicts leaving the house to pickup a cup of coffee. The action of turning off the lights in the entirehouse in itself does not contradict picking up a cup of coffee, but theaction paired with other actions in a “Good Night” routine contradictsleaving the house to pick up coffee.

Furthermore, the “Drive Home” routine can be compared to the new coffeeordering action. The user is already in the car driving, so there are nocontradictions between any actions in the “Drive Home” routine andpicking up a cup of coffee. However, the automated assistant generallyreviews many factors before suggesting a routine to add a new action.The automated assistant can compared to similar routines of other usersand see that most users do not order coffee in the evening when drivinghome from work. This can indicate to the automated assistant to notsuggest adding the action to the “Drive Home” routine. Additionally, theuser's historical actions of ordering coffee can be analyzed, and theautomated assistant can see that the user never orders coffee after 3 pmand the user generally begins the “Drive Home” routine between 5 pm and6 pm. The time the user performs the “Drive Home” routine wouldcontradict with historical data about when a user orders coffee from“Local Coffee Shop”. This can further indicate to the automatedassistant to not suggest adding the new action of ordering coffee to the“Drive Home” routine.

Therefore, after analyzing all routines for the user, the automatedassistant in this example should select the “Good Morning” routine tosuggest adding the new action of ordering a cup of coffee from “LocalCoffee Shop”.

The automated assistant can render user interface output (408) thatprompts whether the action should be added to any of the routines in thegroup of potential automated assistant routines. In someimplementations, a user may add the same action to several routines. Insome implementations, the user may want to add an action to a singleroutine. Furthermore, in some implementations, the user can asked if theaction should be added to a routine after performing the action similarto FIG. 2 described above. Additionally or alternatively, the user canbe asked if the action should be added to a routine after running aspecific routine similar to FIG. 3 described above.

If affirmative user interface input is received (410) in response to theoutput at (408), the automatic assistant can add the action to acorresponding automated assistant routine. For example, if the output at(408) prompts whether the action should be added to a particularroutine, a spoken utterance of “yes” can cause the action to be added tothe particular routine. Also, for example, if the output at (408)prompts whether the action should be added to a first particular routineor a second particular routine, a spoken utterance of “the first one”can cause the action to be added to the first particular routine, butnot the second particular routine; a spoken utterance of “the secondone” can cause the action to be added to the second particular routine,but not the first particular routine; and a spoken utterance of “both”can cause the action to be added to both the first and second particularroutines. In many implementations, the automated assistant can promptthe user with the name of particular routines, and the user can add anaction to the routine by saying the name of the particular routine. Forexample, if the output (408) prompt the user suggestions to add aroutine to a good morning routine and a drive to work routine, a spokenutterance of the name of the routine, for example, “Drive to Work” cancause the action to be added to the “Drive to Work” routine. In someimplementations, the automated assistant can automatically add theaction to the routine and can signal the user once the action has beenadded to the routine. In some implementations, the automated assistantcan decide where in the sequence of actions in the preexisting routineto add the new action similar to the discussion in FIG. 2 above.

FIG. 5 is a block diagram of an example computer system 510. Computersystem 510 typically includes at least one processor 514 whichcommunicates with a number of peripheral devices via bus subsystem 512.These peripheral devices may include a storage subsystem 524, including,for example, a memory 525 and a file storage subsystem 526, userinterface output devices 520, user interface input devices 522, and anetwork interface subsystem 516. The input and output devices allow userinteraction with computer system 510. Network interface subsystem 516provides an interface to outside networks and is coupled tocorresponding interface devices in other computer systems.

User interface input devices 522 may include a keyboard, pointingdevices such as a mouse, trackball, touchpad, or graphics tablet, ascanner, a touchscreen incorporated into the display, audio inputdevices such as voice recognition systems, microphones, and/or othertypes of input devices. In general, use of the term “input device” isintended to include all possible types of devices and ways to inputinformation into computer system 510 or onto a communication network.

User interface output devices 520 may include a display subsystem, aprinter, a fax machine, or non-visual displays such as audio outputdevices. The display subsystem may include a cathode ray tube (CRT), aflat-panel device such as a liquid crystal display (LCD), a projectiondevice, or some other mechanism for creating a visible image. Thedisplay subsystem may also provide non-visual display such as via audiooutput devices. In general, use of the term “output device” is intendedto include all possible types of devices and ways to output informationfrom computer system 510 to the user or to another machine or computersystem.

Storage subsystem 524 stores programming and data constructs thatprovide the functionality of some or all of the modules describedherein. For example, the storage subsystem 524 may include the logic toperform selected aspects of FIG. 1 and/or process 400, any operation(s)discussed herein, and/or to implement one or more of the cloud-basedautomated components 116, an automated assistant 112, the client device102, and/or any other device or application discussed herein.

These software modules are generally executed by processor 514 alone orin combination with other processors. Memory 525 used in the storagesubsystem 524 can include a number of memories including a main randomaccess memory (RAM) 530 for storage of instructions and data duringprogram execution and a read only memory (ROM) 532 in which fixedinstructions are stored. A file storage subsystem 526 can providepersistent storage for program and data files, and may include a harddisk drive, a floppy disk drive along with associated removable media, aCD-ROM drive, an optical drive, or removable media cartridges. Themodules implementing the functionality of certain implementations may bestored by file storage subsystem 426 in the storage subsystem 524, or inother machines accessible by the processor(s) 514.

Bus subsystem 512 provides a mechanism for letting the variouscomponents and subsystems of computer system 510 communicate with eachother as intended. Although bus subsystem 512 is shown schematically asa single bus, alternative implementations of the bus subsystem may usemultiple busses.

Computer system 510 can be of varying types including a workstation,server, computing cluster, blade server, server farm, or any other dataprocessing system or computing device. Due to the ever-changing natureof computers and networks, the description of computer system 510depicted in FIG. 5 is intended only as a specific example for purposesof illustrating some implementations. Many other configurations ofcomputer system 510 are possible having more or fewer components thanthe computer system depicted in FIG. 5 .

In situations in which the systems described herein collect personalinformation about users (or as often referred to herein,“participants”), or may make use of personal information, the users maybe provided with an opportunity to control whether programs or featurescollect user information (e.g., information about a user's socialnetwork, social actions or activities, profession, a user's preferences,or a user's current geographic location), or to control whether and/orhow to receive content from the content server that may be more relevantto the user. Also, certain data may be treated in one or more waysbefore it is stored or used, so that personal identifiable informationis removed. For example, a user's identity may be treated so that nopersonal identifiable information can be determined for the user, or auser's geographic location may be generalized where geographic locationinformation is obtained (such as to a city, ZIP code, or state level),so that a particular geographic location of a user cannot be determined.Thus, the user may have control over how information is collected aboutthe user and/or used.

What is claimed:
 1. A method implemented by one or more processors, themethod comprising: identifying one or more occurrences of initiation ofan action by an automated assistant, each of the occurrences being inresponse to corresponding user interface input provided by a user viaone or more automated assistant interfaces that interact with theautomated assistant; identifying an automated assistant routine that isstored in association with the user, wherein the automated assistantroutine defines multiple existing actions that are automaticallyperformed via the automated assistant in response to initialization ofthe automated assistant routine, and wherein the action is in additionto the multiple existing actions of the automated assistant routine;determining a correlation between the automated assistant routine storedin association with the user and the action initiated by the automatedassistant in the one or more occurrences; based on determining thecorrelation between the automated assistant routine and the action:causing user interface output to be rendered via a client device of theuser, wherein the user interface output prompts the user to add theaction to the automated assistant routine; receiving affirmative userinterface input in response to the user interface output; in response toreceiving the affirmative user interface input: automatically adding theaction, to the automated assistant routine, to cause the action to beautomatically performed via the automated assistant in response toinitialization of the automated assistant routine, wherein automaticallyadding the action to the automated assistant routine comprises:automatically adding the action with a determined position, forperforming the action in the automated assistant routine, that isrelative to positions of performing of the multiple existing actions inthe automated assistant routine; and in response to subsequentinitialization of the automated assistant routine, causing performanceof the multiple existing actions and of the action added to theautomated assistant routine, including causing performance of the actionwith the determined position.
 2. The method of claim 1, furthercomprising: determining the determined position of the action based on aduration of user interface output that is required in performing theaction.
 3. The method of claim 2, wherein determining the determinedposition of the action is further based on an additional duration ofuser interface output that is required in performing an existing actionof the multiple existing actions.
 4. The method of claim 3, whereindetermining the determined position comprises: determining thedetermined position to be prior to an additional position, of theexisting action, based on the duration being a lesser duration than theadditional duration.
 5. The method of claim 1, further comprising:determining the determined position of the action based on whether userinterface output is required in performing the action.
 6. The method ofclaim 1, further comprising: determining the determined position of theaction based on one or more temporal relationships, each of the temporalrelationships being between a corresponding one of the one or moreoccurrences of initiation of the action and a corresponding occurrenceof the automated assistant routine.
 7. The method of claim 6, whereindetermining the determined position of the action comprises determiningthe determined position to be after the positions of performing of themultiple existing actions, based on each of the temporal relationshipsbeing after conclusion of a corresponding occurrence of the automatedassistant routine.
 8. The method of claim 7, wherein the determinedposition of the action is after the positions of performing of themultiple existing actions, and is with a temporal delay after performingof the multiple existing actions.
 9. The method of claim 8, furthercomprising determining the temporal delay as a function of the temporalrelationships.
 10. The method of claim 1, wherein the corresponding userinterface input comprises one or more spoken utterances that, whenconverted to text, comprises first text of a first length; and whereininitialization of the automated assistant routine occurs in response toa given spoken utterance that, when converted to text, comprises secondtext of a second length, wherein the second length is shorter than thefirst length.
 11. The method of claim 1, wherein causing the userinterface output to be rendered via the client device of the user isfurther based on performing the automated assistant routine and occursat a conclusion of performing the automated assistant routine.
 12. Themethod of claim 1, wherein the corresponding user interface inputcomprises a corresponding spoken utterance, and further comprising:identifying a profile of the user based on one or more voicecharacteristics of the corresponding spoken utterance; whereinidentifying the automated assistant routine that is stored inassociation with the user comprises identifying the automated assistantroutine based on the automated assistant routine being stored inassociation with the profile of the user.
 13. A method implemented byone or more processors, the method comprising: identifying one or moreoccurrences of initiation of an action by an automated assistant,wherein each of the occurrences is in response to corresponding userinterface input provided by a user via one or more automated assistantinterfaces that interact with the automated assistant, and wherein theaction includes controlling a device having one or more device topologyattributes; identifying an automated assistant routine that is stored inassociation with the user, wherein the automated assistant routinedefines multiple existing actions that are automatically performed viathe automated assistant in response to initialization of the automatedassistant routine, wherein the multiple existing actions includecontrolling a routine device having one or more routine device topologyattributes, and wherein the action is in addition to the multipleexisting actions of the automated assistant routine; determining acorrelation between the automated assistant routine stored inassociation with the user and the action initiated by the automatedassistant in the one or more occurrences, wherein determining thecorrelation is based on comparing: the one or more device topologyattributes, to the one or more routine device topology attributes; basedon determining the correlation between the automated assistant routineand the action: causing user interface output to be rendered via aclient device of the user, wherein the user interface output prompts theuser to add the action to the automated assistant routine; receivingaffirmative user interface input in response to the user interfaceoutput; in response to receiving the affirmative user interface input:automatically adding the action, to the automated assistant routine, tobe automatically performed via the automated assistant in response toinitialization of the automated assistant routine; and in response tosubsequent initialization of the automated assistant routine, causingperformance of the multiple existing actions and of the action added tothe automated assistant routine.
 14. The method of claim 13, wherein theone or more device topology attributes include a location of the deviceand wherein the one or more routine device topology attributes include aroutine location of the routine device.
 15. The method of claim 14,wherein determining the correlation is based on determining, based onthe comparing, that the location matches the routine location.
 16. Themethod of claim 13, wherein the multiple existing actions furtherinclude controlling an additional routine device having one or moreadditional routine device topology attributes wherein determining thecorrelation is further based on comparing the one or more devicetopology attributes to the one or more additional routine devicetopology attributes.
 17. The method of claim 13, wherein thecorresponding user interface input comprises one or more spokenutterances that, when converted to text, comprises first text of a firstlength; and wherein initialization of the automated assistant routineoccurs in response to a given spoken utterance that, when converted totext, comprises second text of a second length, wherein the secondlength is shorter than the first length.
 18. The method of claim 13,wherein causing the user interface output to be rendered via the clientdevice of the user is further based on performing the automatedassistant routine and occurs at a conclusion of performing the automatedassistant routine.